home *** CD-ROM | disk | FTP | other *** search
/ The Fatted Calf / The Fatted Calf.iso / Applications / Audio / Spectro / Source / WaterfallComputer.m < prev    next >
Text File  |  1992-01-22  |  2KB  |  71 lines

  1.  
  2. /* Generated by Interface Builder */
  3.  
  4. #import "WaterfallComputer.h"
  5. #import "Spectro.h"
  6. #import "SignalProcessor.h"
  7. #import <soundkit/soundkit.h>
  8. #import <math.h>
  9.  
  10. @implementation WaterfallComputer
  11.  
  12. extern int data_size,power_of_four,window_size,num_frames,total_data,s_rate,mono_file;
  13. extern float f[16384],freq_max;
  14. extern BOOL running_analysis,one_time,waterfall;
  15. extern char window_type[200];
  16. extern int firstSample,sampleCount;
  17. extern float ceiling,flor;
  18.  
  19. id mySignalProcessor,myApp;
  20.  
  21. - setApp:anObject
  22. {
  23.     myApp = anObject;
  24.     return self;
  25. }
  26.  
  27. - setSignalProcessor:anObject
  28. {
  29.     mySignalProcessor = anObject;
  30.     return self;
  31. }
  32.  
  33. - computeThisCodex: (unsigned char *) data
  34. {
  35.     int i,j,k,stopping = 0;
  36.     for (j=num_frames-1;j>=0 && one_time && !stopping;j--)    {
  37.         k = j * window_size * 0.5;
  38.             for (i=0;i<window_size;i++) f[i] = (float) SNDiMulaw(data[i +k + firstSample]);
  39.         for (i=window_size;i<data_size;i++) f[i] = 0.0;
  40.         [mySignalProcessor window: window_size array: f type: window_type phase: FALSE];
  41.         [mySignalProcessor fhtRX4: power_of_four array: f];
  42.         [mySignalProcessor logMag: data_size array: f floor: flor ceiling: ceiling];
  43.         stopping = [myApp passThisToWFViewPlease:  f ];
  44.     }
  45.     return self;
  46. }
  47.  
  48. - computeThisLinear: (short *) data
  49. {
  50.     int i,j,k,stopping = 0;
  51.     for (j=num_frames-1;j>=0 && one_time && !stopping;j--)    {
  52.         k = j * window_size * 0.5;
  53.         if (mono_file==2)
  54.             for (i=0;i<window_size;i++) f[i] = (float) data[i+ k + firstSample];
  55.         if (mono_file==1)
  56.             for (i=0;i<window_size;i++) f[i] = (float) (data[2*(i+ k + firstSample)] + 
  57.                             data[2*(i + k + firstSample) + 1]) * 0.5;
  58.         if (mono_file==0)
  59.             for (i=0;i<window_size;i++) f[i] = (float) data[2*(i + k + firstSample) + 1];
  60.         if (mono_file==-1)
  61.             for (i=0;i<window_size;i++) f[i] = (float) data[2*(i + k + firstSample) ];
  62.         for (i=window_size;i<data_size;i++) f[i] = 0.0;
  63.         [mySignalProcessor window: window_size array: f type: window_type phase: FALSE];
  64.         [mySignalProcessor fhtRX4: power_of_four array: f];
  65.         [mySignalProcessor logMag: data_size array: f floor: flor ceiling: ceiling];
  66.         stopping = [myApp passThisToWFViewPlease:  f ];
  67.     }
  68.     return self;
  69. }
  70. @end
  71.